<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Cadastromodel extends CI_Model {

	public function __construct() {
		if($this->session->userdata('banco')>0){
			$this->db->query("USE " . $this->session->userdata('banco'));
			$this->atualizaAlertas(); 	
			$this->atualizaLembretes();
		}else{
			$this->db->query("USE finaz");
		}
	}

	public function salvar($tabela, $dados, $chavePrimaria)
	{
		$idRetorno = 0;
		if ( array_key_exists($chavePrimaria, $dados) )
		{
			$this->db->where($chavePrimaria, $dados[$chavePrimaria]);
			$idRetorno = $dados[$chavePrimaria];
			unset($dados[$chavePrimaria]);
			$this->db->update($tabela, $dados);
		}
		else
		{
			$this->db->insert($tabela, $dados);
		}
		
		$idRetorno = ($idRetorno != 0) ? $idRetorno : $this->db->insert_id();

		return $idRetorno;
	}

	public function pesquisar( $tabela, $parametro = null, $qtd = null, $pag = null, $arrJoin = array(), $arrSelect = array(), $ordenacao=null )
	{
		if ( $arrSelect )
			foreach ( $arrSelect as $campo )
				$this->db->select( $campo );
		
		$this->db->from($tabela);
		
		if( $arrJoin )
			foreach ( $arrJoin as $join => $arrTables )
				foreach ( $arrTables as $table => $campos )
					$this->db->join( $table, $campos, $join );

		if( $parametro )
			$this->db->where($parametro);
			
		if($ordenacao<>'')
			$this->db->order_by($ordenacao);
		
		if( $qtd )
			if ( $pag )
				$this->db->limit($pag,$qtd);
			else
				$this->db->limit($qtd);

		

		$rs = $this->db->get();
		
		if ( $qtd == 1 )
				$return = $rs->row();
			else
				$return = $rs->result();

		return $return;
	}

	public function excluir($tabela, $parametro)
	{
		$this->db->delete($tabela, $parametro);
	}
	
	function atualizaAlertas(){
		$this->db->from("alerta");
        $this->db->where("alerta.Lido = FALSE and alerta.PessoaID = " . $this->session->userdata('pessoaLogadoID'));
        $result = $this->db->get();
        $dados = $result->result();
		$_SESSION['dadosAlertas'] = $dados;

		return true;	
	}
	
	function atualizaLembretes(){
		$this->db->from("lancamento");
        $this->db->where("lancamento.Liquidado = FALSE and lancamento.PessoaID = " . $this->session->userdata('pessoaLogadoID') . " order by lancamento.DataVencimento ASC LIMIT 3");
        $result = $this->db->get();
        $dados = $result->result();
		$_SESSION['dadosLembretes'] = $dados;

		return true;
	}
	
	public function paginacao( $offset=0, $tabela, $caminho, $arrJoin=array(), $arrSelect=array(), $validaPessoa=FALSE)
	{
		$this->load->library('pagination');
		
		if ( $arrSelect )
			foreach ( $arrSelect as $campo )
				$this->db->select( $campo );
		
		if( $arrJoin )
			foreach ( $arrJoin as $join => $arrTables )
				foreach ( $arrTables as $table => $campos )
					$this->db->join( $table, $campos, $join );
		
		
		if($validaPessoa){
			$this->db->query("USE finaz");
			$idPessoaFin = $this->db->query('select UsuarioID, Email from usuario where Email = "' . $this->session->userdata('email') . '"');
			$dadosUsuarioInterno = $idPessoaFin->result();

			if($dadosUsuarioInterno[0]->UsuarioID . "_finanz" <> $this->session->userdata('banco')){
				$this->db->where("$tabela.PessoaID = " . $this->session->userdata('pessoaLogadoID'));
			}
			
			$this->db->query("USE " . $this->session->userdata('banco')); 
		}

		if($tabela == 'lancamento'){
			$this->db->order_by('DataVencimento ASC');
		}
		
		$query = $this->db->get($tabela,10,$offset);
		
		$config['base_url'] = base_url() ."gerenciador/$caminho";
		$config['total_rows'] = $this->db->count_all($tabela);
		$config['per_page'] = '10';
		$config['first_link'] = 'Inicio';
		$config['last_link'] = 'Fim';
		$this->pagination->initialize($config);
		
		$var['paginacao'] = $this->pagination->create_links();
		$var[$tabela]  = $query->result();
		$var['titulo'] = "Listagem de $caminho";
		
		return $var;
	}
}
